opencc (1.1.9+ds1-4) unstable; urgency=medium
authorBoyuan Yang <byang@debian.org>
Wed, 14 Jan 2026 00:17:36 +0000 (19:17 -0500)
committerBoyuan Yang <byang@debian.org>
Wed, 14 Jan 2026 00:17:36 +0000 (19:17 -0500)
  * debian/control: Bump Standards-Version to 4.7.3.
  * Build-dep on python3-all-dev instead of python3-dev. (Closes: #1125410)
  * debian/rules: Enable DH_VERBOSE for better debugging.
  * debian/pybuild.testfiles: Added to enable python binding post-build tests.
  * debian/patches/backport/345c9a50ab07018f1b4439776bad78a0d40778ec.patch:
    Add patch from upstream to fix out-of-bounds read issues when handling
    truncated UTF-8 input.
  * debian/patches/0009-setup.py-Handle-python-binding-instead-of-cmake.patch:
    Add patch so that the python3 binding as well as pybind11 usage is handled
    by setup.py, not CMakeLists.txt. This is required to build for all
    supported python3 versions instead of just the default one.
  * debian/rules: Adjust python-related building accordingly.

[dgit import unpatched opencc 1.1.9+ds1-4]

36 files changed:
1  2 
debian/TODO
debian/changelog
debian/clean
debian/control
debian/copyright
debian/docs
debian/gbp.conf
debian/libopencc-data.install
debian/libopencc-dev.install
debian/libopencc-doc.doc-base
debian/libopencc-doc.docs
debian/libopencc1.1.install
debian/libopencc1.1.symbols
debian/opencc.install
debian/patches/0001-use-cmake-install-libdir.patch
debian/patches/0002-Force-build-with-c-17.patch
debian/patches/0003-no-remote-images-when-reading-docs-on-disk.patch
debian/patches/0004-Use-system-googletest.patch
debian/patches/0005-Disable-build-in-setup.py.patch
debian/patches/0009-setup.py-Handle-python-binding-instead-of-cmake.patch
debian/patches/backport/0006-Fix-build-for-gcc-15-934.patch
debian/patches/backport/0007-Fix-deprecated-declarations-in-C-17.patch
debian/patches/backport/345c9a50ab07018f1b4439776bad78a0d40778ec.patch
debian/patches/series
debian/pybuild.testfiles
debian/python3-opencc.install
debian/rules
debian/source/format
debian/source/lintian-overrides
debian/tests/CMakeLists.txt
debian/tests/CommandLineConvertTest.cpp
debian/tests/README.md
debian/tests/control
debian/tests/integration
debian/upstream/metadata
debian/watch

diff --cc debian/TODO
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6b06ca640bbe52f10e8d5f36b82fede5b5d618b7
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++* We need to pack nodejs module provided by opencc when possible.
++* The python binding is not packaged. There is a embedded pybind11
++  library that need to be dealt if we want to enable python
++  binding support.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..91922f00dd0c9559a3cfa3876db621236210dd7f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,659 @@@
++opencc (1.1.9+ds1-4) unstable; urgency=medium
++
++  * debian/control: Bump Standards-Version to 4.7.3.
++  * Build-dep on python3-all-dev instead of python3-dev. (Closes: #1125410)
++  * debian/rules: Enable DH_VERBOSE for better debugging.
++  * debian/pybuild.testfiles: Added to enable python binding post-build tests.
++  * debian/patches/backport/345c9a50ab07018f1b4439776bad78a0d40778ec.patch:
++    Add patch from upstream to fix out-of-bounds read issues when handling
++    truncated UTF-8 input.
++  * debian/patches/0009-setup.py-Handle-python-binding-instead-of-cmake.patch:
++    Add patch so that the python3 binding as well as pybind11 usage is handled
++    by setup.py, not CMakeLists.txt. This is required to build for all
++    supported python3 versions instead of just the default one.
++  * debian/rules: Adjust python-related building accordingly.
++
++ -- Boyuan Yang <byang@debian.org>  Tue, 13 Jan 2026 19:17:36 -0500
++
++opencc (1.1.9+ds1-3) unstable; urgency=medium
++
++  * debian/control: Bump Standards-Version to 4.7.2.
++  * Upload to unstable.
++
++ -- Boyuan Yang <byang@debian.org>  Sun, 28 Sep 2025 19:36:20 -0400
++
++opencc (1.1.9+ds1-3~exp1) experimental; urgency=medium
++
++  * Test rebuild against libmarisa 0.3.1.
++
++ -- Boyuan Yang <byang@debian.org>  Tue, 23 Sep 2025 20:07:44 -0400
++
++opencc (1.1.9+ds1-2) unstable; urgency=medium
++
++  * debian/patches/backport/0006-Fix-build-for-gcc-15-934.patch,
++    debian/patches/backport/0007-Fix-deprecated-declarations-in-C-17.patch:
++    Backport upstream patches to fix FTBFS with GCC 15. (Closes: #1097512)
++  * debian/patches/0002-Force-build-with-c-17.patch: Force building with
++    c++17 standard to fix FTBFS with the new googletest.
++
++ -- Boyuan Yang <byang@debian.org>  Tue, 09 Sep 2025 08:26:01 -0400
++
++opencc (1.1.9+ds1-1) unstable; urgency=medium
++
++  * Upload to unstable.
++
++ -- Boyuan Yang <byang@debian.org>  Wed, 14 Aug 2024 14:05:52 -0400
++
++opencc (1.1.9+ds1-1~exp1) experimental; urgency=medium
++
++  * New upstream release.
++  * debian/control: Add new build-test-dependency python3-pytest.
++  * debian/patches/0002: Dropped, merged upstream.
++  * debian/libopencc1.1.symbols: Update symbols.
++  * debian/rules: Allow python binding post-build test failure for now
++    before we find out the correct way to test the python package with
++    pytest.
++
++ -- Boyuan Yang <byang@debian.org>  Wed, 14 Aug 2024 12:32:59 -0400
++
++opencc (1.1.8+ds1-3) unstable; urgency=medium
++
++  * Upload to unstable. Closes: #1077816
++  * debian/control: Move main description to source package section.
++  * debian/control: Add new build-dependency pybuild-plugin-pyproject.
++  * debian/control: Use dh-sequence-python3.
++  * debian/rules: Use pyproject instead of distutils for pybuild.
++
++ -- Boyuan Yang <byang@debian.org>  Sat, 03 Aug 2024 19:07:26 -0400
++
++opencc (1.1.8+ds1-2) experimental; urgency=medium
++
++  * Team upload
++
++  [ Shengjing Zhu ]
++  * Disable build in setup.py
++
++  [ Felix Yan ]
++  * Enable python binding (Closes: #1077816)
++
++ -- Shengjing Zhu <zhsj@debian.org>  Sat, 03 Aug 2024 13:38:47 +0800
++
++opencc (1.1.8+ds1-1) unstable; urgency=medium
++
++  * Upload to unstable.
++  * debian/libopencc1.1.symbols: Reconfirm symbols.
++
++ -- Boyuan Yang <byang@debian.org>  Mon, 29 Jul 2024 12:07:48 -0400
++
++opencc (1.1.8+ds1-1~exp1) experimental; urgency=medium
++
++  * New upstream release.
++  * debian/copyright: Update information.
++  * debian/patches: Refresh patches.
++  * debian/control: Use dh-sequence-pkgkde-symbolshelper.
++
++ -- Boyuan Yang <byang@debian.org>  Sun, 28 Jul 2024 20:00:37 -0400
++
++opencc (1.1.7+ds1-1) unstable; urgency=medium
++
++  * Team upload
++  * New upstream version 1.1.7+ds1
++  * debian/libopencc-dev.install:
++    - Install CMake config modules
++
++ -- Gunnar Hjalmarsson <gunnarhj@debian.org>  Sat, 21 Oct 2023 21:22:49 +0200
++
++opencc (1.1.6+ds1-2) unstable; urgency=medium
++
++  [ Helmut Grohne ]
++  * Fix FTCBFS: Add B-D: opencc <cross> for opencc_dict. (Closes: #1051036)
++
++ -- Boyuan Yang <byang@debian.org>  Fri, 01 Sep 2023 12:00:26 -0400
++
++opencc (1.1.6+ds1-1) unstable; urgency=medium
++
++  * Team upload
++  * New upstream version 1.1.6+ds1
++  * Refresh patches:
++    - d/p/0001-use-cmake-install-libdir.patch
++    - d/p/0005-Use-system-googletest.patch
++
++ -- Gunnar Hjalmarsson <gunnarhj@debian.org>  Sat, 10 Dec 2022 13:10:03 +0100
++
++opencc (1.1.5+ds1-1) unstable; urgency=medium
++
++  * Team upload
++  * New upstream version 1.1.5+ds1
++
++ -- Gunnar Hjalmarsson <gunnarhj@debian.org>  Tue, 06 Dec 2022 13:40:36 +0100
++
++opencc (1.1.4+ds1-4) unstable; urgency=medium
++
++  * Team upload
++  * Work around uscan issue with GitHub releases page
++
++ -- Gunnar Hjalmarsson <gunnarhj@debian.org>  Tue, 08 Nov 2022 16:33:54 +0100
++
++opencc (1.1.4+ds1-3) unstable; urgency=medium
++
++  * Team upload
++  * debian/libopencc1.1.symbols:
++    - Update other archs for LTO using buildd logs (closes: #1015565)
++  * Build with GCC-12
++    - It builds fine now with GCC-12, so the symbols fix for LTO also
++      closes: #1013008.
++
++ -- Gunnar Hjalmarsson <gunnarhj@debian.org>  Mon, 25 Jul 2022 02:26:42 +0200
++
++opencc (1.1.4+ds1-2) unstable; urgency=medium
++
++  * Team upload
++  * Start fixing FTBFS with LTO enabled (see bug 1015565):
++    - debian/rules: Enable LTO
++    - Create symbols file for amd64 only
++  * Bump Standards-Version to 4.6.1
++  * debian/copyright: Bump copyright year to 2022
++
++ -- Gunnar Hjalmarsson <gunnarhj@debian.org>  Sat, 23 Jul 2022 19:05:33 +0200
++
++opencc (1.1.4+ds1-1) unstable; urgency=medium
++
++  [ xiao sheng wen ]
++  * update-debian-copyright to 2021 year.
++
++  [ Boyuan Yang ]
++  * New upstream version 1.1.4+ds1.
++  * debian/patches: Refresh patches.
++  * debian/libopencc1.1.symbols: Refresh symbols.
++
++ -- Boyuan Yang <byang@debian.org>  Sat, 04 Jun 2022 11:52:24 -0400
++
++opencc (1.1.3+ds1-5) unstable; urgency=medium
++
++  * Team upload
++  * debian/libopencc1.1.symbols:
++    - Refresh using buildd logs for all archs and pkgkde-symbolshelper
++      (Closes: #997412)
++
++ -- Gunnar Hjalmarsson <gunnarhj@debian.org>  Wed, 27 Oct 2021 09:39:59 +0200
++
++opencc (1.1.3+ds1-4) unstable; urgency=medium
++
++  * Team upload
++  * Re-build with GCC 11
++  * debian/libopencc1.1.symbols:
++    - amd64 tweak using buildd log from test rebuild
++
++ -- Gunnar Hjalmarsson <gunnarhj@debian.org>  Tue, 26 Oct 2021 23:03:58 +0200
++
++opencc (1.1.3+ds1-3) unstable; urgency=medium
++
++  * Refresh symbols again for all archs using buildd logs.
++
++ -- Boyuan Yang <byang@debian.org>  Mon, 20 Sep 2021 15:44:37 -0400
++
++opencc (1.1.3+ds1-2) unstable; urgency=medium
++
++  * Refresh symbols for all archs using buildd logs.
++
++ -- Boyuan Yang <byang@debian.org>  Sun, 19 Sep 2021 16:32:52 -0400
++
++opencc (1.1.3+ds1-1) unstable; urgency=medium
++
++  * New upstream release 1.1.3.
++  * Add myself into uploaders list.
++  * debian/patches: Refresh patches.
++    + 0002-use-system-libraries.patch: Dropped, upstream now provides
++      CMake options to use system libraries.
++    + Drop backported patches (0006, 0007), merged upstream.
++  * debian/control:
++    + Bump Standards-Version to 4.6.0.
++    + Add new build-dependency pybind11-dev.
++  * debian/rules: Refresh cmake build options.
++  * debian/libopencc1.1.symbols: Refresh symbols.
++
++ -- Boyuan Yang <byang@debian.org>  Sat, 18 Sep 2021 21:13:03 -0400
++
++opencc (1.1.1+git20200624+ds2-10) unstable; urgency=medium
++
++  * Team upload.
++  * Upload to unstable.
++  * Backport patch to fix performance regression again.
++    Add
++    + 0006-Fix-a-bug-in-the-calculation-of-DictGroup-keyMaxLeng.patch
++    + 0007-Fix-a-severe-performance-bug-in-Conversion-Convert-t.patch
++
++ -- Shengjing Zhu <zhsj@debian.org>  Sun, 07 Mar 2021 14:20:40 +0800
++
++opencc (1.1.1+git20200624+ds2-9) experimental; urgency=medium
++
++  * Team upload.
++  * Remove unused command from autopkgtest scripts
++  * Add build-essential to autopkgtest
++
++ -- Shengjing Zhu <zhsj@debian.org>  Sun, 07 Mar 2021 00:54:22 +0800
++
++opencc (1.1.1+git20200624+ds2-8) experimental; urgency=medium
++
++  * Team upload.
++  * Enable test when building
++  * Add autopkgtest
++
++ -- Shengjing Zhu <zhsj@debian.org>  Sat, 06 Mar 2021 17:57:00 +0800
++
++opencc (1.1.1+git20200624+ds2-7) unstable; urgency=high
++
++  * Team upload.
++  * Drop debian/patches/0005 for now due to regression reported.
++    See also https://github.com/fcitx/fcitx5/issues/238 .
++
++ -- Boyuan Yang <byang@debian.org>  Fri, 05 Mar 2021 09:37:48 -0500
++
++opencc (1.1.1+git20200624+ds2-6) unstable; urgency=high
++
++  * Team upload.
++  * debian/patches/0005: Add upstream patch to fix severe performance
++    regression in `Conversion::Convert` that caused O(N^2) complexity.
++  * debian/rules: Disable parallel build to workaround some random
++    build error for now.
++
++ -- Boyuan Yang <byang@debian.org>  Sun, 28 Feb 2021 19:48:01 -0500
++
++opencc (1.1.1+git20200624+ds2-5) unstable; urgency=medium
++
++  * Team upload.
++  * debian/rules: Rewrite to support <!nodoc> build profile.
++  * debian/rules: Enable dh_doxygen when building docs.
++  * Drop unnecessary build dependencies. (Closes: #981606)
++  * debian/control: Mark build-dependency doxygen as <!nodoc>.
++  * debian/control: Drop build-dependency on libjs-jquery. Let
++    doxygen handle it.
++  * debian/control: Drop build-dependency on graphviz. Doxyfile
++    did not enable HAVE_DOT.
++  * debian/control: Drop build-dependency on dartz. Currently opencc
++    uses its vendored copy.
++
++ -- Boyuan Yang <byang@debian.org>  Tue, 02 Feb 2021 11:58:39 -0500
++
++opencc (1.1.1+git20200624+ds2-4) unstable; urgency=medium
++
++  * Build-depends on pkg-kde-tools to handle symbols.
++  * debian/libopencc1.1.symbols: Refresh symbols using Debian
++    buildd logs.
++
++ -- Boyuan Yang <byang@debian.org>  Sun, 17 Jan 2021 17:52:00 -0500
++
++opencc (1.1.1+git20200624+ds2-3) unstable; urgency=medium
++
++  * Team upload.
++
++  [ Gunnar Hjalmarsson ]
++  * Replace shlibs file with symbols file
++  * debian/patches/no-remote-images-when-reading-docs-on-disk.patch:
++    - Fixes a privacy breach previously reported as Lintian warnings
++  * Bump Standards-Version to 4.5.1
++  * debian/source/lintian-overrides:
++    - Explain why libopencc1.1 is not multi-archified even if
++      libopencc-dev depends on it.
++
++  [ Boyuan Yang ]
++  * Mark package libopencc-dev as Multi-Arch: same
++
++ -- Boyuan Yang <byang@debian.org>  Sat, 16 Jan 2021 10:36:38 -0500
++
++opencc (1.1.1+git20200624+ds2-2) unstable; urgency=high
++
++  * Team upload.
++  * debian/control: Mark package libopencc-data Breaks+Replaces the
++    old libopencc2-data package. (Closes: #963187)
++
++ -- Boyuan Yang <byang@debian.org>  Sat, 04 Jul 2020 13:46:28 -0400
++
++opencc (1.1.1+git20200624+ds2-1) unstable; urgency=medium
++
++  * Team upload.
++  * Upload to unstable.
++
++ -- Boyuan Yang <byang@debian.org>  Sat, 04 Jul 2020 06:28:22 -0400
++
++opencc (1.1.1+git20200624+ds2-1~exp2) experimental; urgency=medium
++
++  * Team upload.
++  * Rebuild against marisa 0.2.6.
++
++ -- Boyuan Yang <byang@debian.org>  Fri, 03 Jul 2020 17:40:16 -0400
++
++opencc (1.1.1+git20200624+ds2-1~exp1) experimental; urgency=medium
++
++  * Team upload.
++
++  [ 肖盛文 ]
++  * add libopencc-doc.doc-base,to register opencc to doc-base
++  * d/control:
++     - add Section: doc for libopencc-doc
++     - add Depends: libjs-jquery for the libopencc-doc package
++
++  [ Boyuan Yang ]
++  * Import new upstream snapshot 2020-06-24 to fix some bugs.
++  * debian/patches: Refresh patches.
++
++ -- Boyuan Yang <byang@debian.org>  Thu, 25 Jun 2020 20:34:50 -0400
++
++opencc (1.1.1+ds1-1~exp1) experimental; urgency=medium
++
++  * Team upload.
++
++  [ 肖盛文 ]
++  * New upstream version 1.1.1
++  * change libopencc data pkgname from libopencc[num]-data to libopencc-data
++  * change libopencc pkgname from libopencc2 to libopencc1.1
++  * update debian/libopencc1.1.install for filename *.ocd2
++  * d/rules:
++     - delete override_dh_missing:
++     - use execute_after_dh_auto_clean:
++     - use execute_after_dh_auto_install:
++  * d/copyright:
++     - update dirname for new upstream version
++     - add xiao sheng wen <atzlinux@sina.com> for debian/*
++     - add Upstream-Contact
++  * d/control:
++     - add Rules-Requires-Root: no
++     - add New Uploaders: xiao sheng wen
++     - delete some Replaces: and Breaks:,
++       let the new version packages can co-exist with the old ones.
++  * add debian/upstream/metadata
++  * d/watch: use @PACKAGE@ @ANY_VERSION@@ARCHIVE_EXT@
++
++  [ Boyuan Yang ]
++  * ds: Do not include bundled gtest and libmarisa.
++  * debian/rules: Explicitly disable building bundled libmarisa.
++  * debian/libopencc1.1.shlibs: Reset version requirement.
++  * debian/control: Add new build-dependency libmarisa-dev.
++  * debian/patches: Refreshed.
++
++ -- Boyuan Yang <byang@debian.org>  Sat, 23 May 2020 15:51:01 -0400
++
++opencc (1.0.6-2) unstable; urgency=medium
++
++  * Team upload.
++  * debian/libopencc2.shlibs: Bump version requirement to 1.0.6.
++  * debian/control: Bump debhelper compat to v13.
++  * debian/rules: Drop as-needed linker flag.
++
++ -- Boyuan Yang <byang@debian.org>  Sat, 02 May 2020 10:46:44 -0400
++
++opencc (1.0.6-1) unstable; urgency=medium
++
++  * Team upload.
++  * New upstream release 1.0.6.
++  * debian/control:
++    + Bump Standards-Version to 4.5.0.
++    + Add Debian Chinese Team into uploaders to show team's interest
++      in package co-maintenance.
++  * debian/patches: Refresh patches.
++
++ -- Boyuan Yang <byang@debian.org>  Mon, 13 Apr 2020 18:20:20 -0400
++
++opencc (1.0.5+git20190530-1) unstable; urgency=medium
++
++  * Team upload.
++  * New upstream git snapshot (2019-05-30).
++    - opencc::ConvertDirectory is now exported.
++    - Various fixes and document updates.
++  * debian/control:
++    + Bump Standards-Version to 4.4.0.
++    + Bump debhelper copmat to v12.
++    + Add build-dependency graphviz for dot support for doxygen.
++  * debian/patches: Add patch 0004 to migrate from python2 to
++    python3. (Closes: #937195)
++
++ -- Boyuan Yang <byang@debian.org>  Fri, 30 Aug 2019 14:09:03 -0400
++
++opencc (1.0.5-2) unstable; urgency=medium
++
++  * Team upload.
++  * Rebuild against gcc 8.
++  * debian/control:
++    + Update uploaders email address and use the @debian.org one.
++    + Bump Standards-Version to 4.2.1 (no changes needed).
++  * debian/rules: Avoid explicit invocation to dpkg-architecture.
++
++ -- Boyuan Yang <byang@debian.org>  Thu, 20 Sep 2018 15:07:38 -0400
++
++opencc (1.0.5-1) unstable; urgency=medium
++
++  * Team upload.
++  * New upstream Release.
++  * Remove libopencc2 M-A:same mark for now since ocd files exist.
++    (Closes: #874227)
++  * Remove LI Daobing from Uploaders list. (Closes: #841792)
++    Thank you for your previous work!
++  * Apply "wrap-and-sort -abst".
++  * d/patches: Refresh patches.
++  * d/changelog: Remove trailing spaces.
++  * d/control: Use debian-input-method maillist in Maintainer field.
++    Closes: #899625.
++  * d/control: Use Vcs URL on Salsa platform.
++  * d/control: Bump Standards-Version to 4.1.4.
++  * d/control: Bump debhelper compat to v11.
++  * d/rules: Use NEWS.md as upstream changelog.
++  * d/rules: Use "dh_missing --fail-missing".
++  * d/shlibs: Explicitly require the latest library version.
++
++ -- Boyuan Yang <073plan@gmail.com>  Thu, 21 Jun 2018 11:18:37 +0800
++
++opencc (1.0.4-5) unstable; urgency=medium
++
++  * Make ocd data files arch:any (Closes: #851733)
++
++ -- Aron Xu <aron@debian.org>  Fri, 20 Jan 2017 15:15:35 +0800
++
++opencc (1.0.4-4) unstable; urgency=medium
++
++  * Tighter Breaks/Conflicts version (Closes: #847145)
++
++ -- Aron Xu <aron@debian.org>  Mon, 19 Dec 2016 23:30:01 +0800
++
++opencc (1.0.4-3) unstable; urgency=medium
++
++  * Correct Breaks/Conflicts version (Closes: #846665)
++
++ -- Aron Xu <aron@debian.org>  Sun, 04 Dec 2016 16:39:48 +0800
++
++opencc (1.0.4-2) unstable; urgency=medium
++
++  [ Aron Xu ]
++  * Install data files to libopencc2-data, drop -dbg package
++    (Closes: #836395)
++
++  [ Boyuan Yang ]
++  * Add BSD-3-clause license in d/copyright
++
++ -- Aron Xu <aron@debian.org>  Sat, 03 Sep 2016 21:07:26 +0800
++
++opencc (1.0.4-1) unstable; urgency=medium
++
++  * Imported Upstream version 1.0.4
++  * Update d/watch to Github URL
++  * std-ver: 3.9.6 -> 3.9.8, no change
++  * Update VCS-Browser URL to use HTTPS
++
++ -- Aron Xu <aron@debian.org>  Mon, 08 Aug 2016 14:43:15 +0800
++
++opencc (1.0.3-1) experimental; urgency=medium
++
++  * New upstream release
++  * Add myself to Uploaders
++  * Drop symbols file, see README.Debian
++
++ -- Aron Xu <aron@debian.org>  Wed, 16 Dec 2015 00:34:21 +0800
++
++opencc (1.0.2-1) experimental; urgency=medium
++
++  * Team upload for new upstream release.
++  * SONAME transition: libopencc1 -> libopencc2
++  * Add libjs-jquery, libtclap-dev, darts, rapidjson-dev to B-D.
++  * Patches added/updated:
++    - lib-name-match-soversion.patch: rename library to match SONAME
++    - install-data-file-to-meet-need-of-multi-arch.patch: updated
++    - use-system-libraries.patch: do not use embeded libraries
++  * Use system version of jquery.js instead of embeded one.
++  * Removed python-opencc, upstream abandoned.
++  * Updated symbols file.
++  * Rewrite copyright file to machine-readable format.
++  * Allow parallel building.
++
++ -- Aron Xu <aron@debian.org>  Thu, 20 Nov 2014 17:09:31 +0800
++
++opencc (0.4.3-2) unstable; urgency=low
++
++  * Add the python-opencc package to support the Python binding.
++    Closes: #694993
++  * Bump standard version to 3.9.5.
++
++ -- Osamu Aoki <osamu@debian.org>  Sat, 02 Nov 2013 12:17:51 +0900
++
++opencc (0.4.3-1) experimental; urgency=low
++
++  * New upstream release.
++  * Update watch file.
++  * Clean up debian/control and wrap-and-sort.
++  * Update symbols file.
++
++ -- Osamu Aoki <osamu@debian.org>  Sun, 15 Sep 2013 00:13:31 +0900
++
++opencc (0.4.0-1) experimental; urgency=low
++
++  * New upstream release
++  * fix-new-test-cases.patch in upstream
++  * part of more_clear_man_c_option.patch is in upstream
++    the rest is in install-data-file-to-meet-need-of-multi-arch.path
++
++ -- Asias He <asias@debian.org>  Fri, 05 Apr 2013 10:52:29 +0800
++
++opencc (0.3.0-3) unstable; urgency=low
++
++  * Rebuild to
++    generate little endian mo file on any arch (Closes: #670016).
++  * add an - before include buildflags.mk
++
++ -- YunQiang Su <wzssyqa@gmail.com>  Sun, 10 Jun 2012 19:35:51 +0800
++
++opencc (0.3.0-2) unstable; urgency=low
++
++  * Multi-arch it.
++  * Add libopencc-dbg package.
++  * Bump standard version to 3.9.3.
++  * Add YunQiang Su to Uploaders.
++  * Enable CPPFLAGS hardening flags (Closes: #665322).
++  * Better explanation for the -c option arguments of opencc,
++    give the path of these files out. (Closes: #656201).
++
++ -- YunQiang Su <wzssyqa@gmail.com>  Thu, 29 Mar 2012 03:22:51 +0800
++
++opencc (0.3.0-1) unstable; urgency=low
++
++  * Team upload.
++
++  [ Kan-Ru Chen ]
++  * New upstream release
++  * debian/control:
++    - Remove autotools-dev and quilt from Build-Depends
++  * debian/rules:
++    - Support `nostrip' DEB_BUILD_OPTIONS
++    - Enable hardening flags.
++  * debian/docs: Install NEWS
++  * debian/copyright: Update update url
++  * debian/watch: Update upstream url
++  * debian/patches/fix-big-endian-build.diff: merged upstream
++  * debian/patches/fix-new-test-cases.patch: New patch.
++
++ -- Kan-Ru Chen <koster@debian.org>  Sat, 17 Dec 2011 16:41:49 +0800
++
++opencc (0.2.0-2) unstable; urgency=low
++
++  * Fix "Please fix FTBFS on mips, ppc, s390 and sparc" (Closes: #624562)
++  * debian/control: bump standards version to 3.9.2.
++  * Set DM-Upload-Allowed to yes
++
++ -- Asias He <asias.hejun@gmail.com>  Mon, 16 May 2011 20:46:03 +0800
++
++opencc (0.2.0-1) unstable; urgency=low
++
++  * New upstream release
++  * Move usr/share/locale to package opencc
++  * Add cmake to Build-Depends
++  * Change Homepage to http://code.google.com/p/opencc
++  * Set Vcs to git.debian.org
++
++ -- Asias He <asias.hejun@gmail.com>  Thu, 17 Mar 2011 21:36:41 +0800
++
++opencc (0.1.2-1) unstable; urgency=low
++
++  * New upstream release.
++  * debian/libopencc1.symbols: updated.
++
++ -- LI Daobing <lidaobing@debian.org>  Wed, 22 Sep 2010 20:40:54 +0800
++
++opencc (0.1.1-2) unstable; urgency=low
++
++  *debian/control: add Conflicts to libopencc0 (Closes: #596434)
++
++ -- Asias He <asias.hejun@gmail.com>  Sun, 12 Sep 2010 14:58:18 +0800
++
++opencc (0.1.1-1) unstable; urgency=low
++
++  [ Asias He ]
++  * New upstream release (closes: #591076).
++  * debian/control: bump standards version to 3.9.1.
++  * debian/watch: use googlecode.debian.net.
++
++  [ LI Daobing ]
++  * debian/clean: added.
++
++ -- LI Daobing <lidaobing@debian.org>  Wed, 11 Aug 2010 22:04:12 +0800
++
++opencc (0.1.0-1) unstable; urgency=low
++
++  * New upstream release.
++  * debian/control:
++    - bump standards version to 3.9.1.
++    - libopencc0 -> libopecc1 (closes: #590473).
++    - libopencc1 replaces libopencc0.
++  * libopencc0 -> libopencc1:
++    - debian/libopencc0.install => debian/libopencc1.install
++    - debian/libopencc0.symbols => debian/libopencc1.symbols
++
++ -- LI Daobing <lidaobing@debian.org>  Thu, 29 Jul 2010 23:05:17 +0800
++
++opencc (0.0.5-1) unstable; urgency=low
++
++  * New upstream release.
++  * debian/control: no longer build depends on python.
++  * debian/opencc.install: move .mo files to libopencc0.
++  * debian/libopencc0.install: install .mo files.
++  * debian/opencc_dict.1: deleted.
++  * debian/opencc.manpages: deleted.
++
++ -- LI Daobing <lidaobing@debian.org>  Wed, 21 Jul 2010 22:42:32 +0800
++
++opencc (0.0.4-1) unstable; urgency=low
++
++  * New upstream release.
++  * debian/control: bump standards version to 3.9.0.
++
++ -- LI Daobing <lidaobing@debian.org>  Fri, 16 Jul 2010 23:52:08 +0800
++
++opencc (0.0.3-1) unstable; urgency=low
++
++  * New upstream release.
++  * debian/opencc.install: updated.
++  * debian/control: opencc depends on libopencc0 at the same version.
++
++ -- LI Daobing <lidaobing@debian.org>  Tue, 22 Jun 2010 19:08:33 +0800
++
++opencc (0.0.2-1) unstable; urgency=low
++
++  * Initial release (Closes: #585621)
++
++ -- LI Daobing <lidaobing@debian.org>  Sat, 19 Jun 2010 18:27:20 +0800
diff --cc debian/clean
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..07772306872fc1d0b077ff8b15e5cbf7bd102853
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,17 @@@
++test/mix2zhs.ans
++test/mix2zhs.in
++test/mix2zhs.ini
++test/mix2zht.ans
++test/mix2zht.in
++test/mix2zht.ini
++test/opencc
++test/simp_to_trad_characters.ocd
++test/simp_to_trad_phrases.ocd
++test/trad_to_simp_characters.ocd
++test/trad_to_simp_phrases.ocd
++test/zhs2zht.ans
++test/zhs2zht.in
++test/zhs2zht.ini
++test/zht2zhs.ans
++test/zht2zhs.in
++test/zht2zhs.ini
diff --cc debian/control
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..745289feed5ae15ab7501cf465ce13faef173238
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,117 @@@
++Source: opencc
++Section: libs
++Maintainer: Debian Input Method Team <debian-input-method@lists.debian.org>
++Uploaders:
++ Debian Chinese Team <chinese-developers@lists.alioth.debian.org>,
++ Asias He <asias@debian.org>,
++ YunQiang Su <syq@debian.org>,
++ Osamu Aoki <osamu@debian.org>,
++ Aron Xu <aron@debian.org>,
++ xiao sheng wen <atzlinux@sina.com>,
++ Boyuan Yang <byang@debian.org>,
++Build-Depends:
++ chrpath,
++ cmake,
++ darts,
++ debhelper-compat (= 13),
++ dh-sequence-python3,
++ doxygen <!nodoc>,
++ googletest <!nocheck>,
++ libmarisa-dev (>> 0.3),
++ libtclap-dev,
++ opencc <cross>,
++ dh-sequence-pkgkde-symbolshelper,
++ pybind11-dev,
++ python3-all-dev,
++ rapidjson-dev,
++ pybuild-plugin-pyproject,
++ python3-pybind11,
++ python3-pytest <!nocheck>,
++ python3-setuptools,
++ python3-wheel,
++Standards-Version: 4.7.3
++Homepage: https://github.com/BYVoid/OpenCC
++Vcs-Git: https://salsa.debian.org/debian/opencc.git
++Vcs-Browser: https://salsa.debian.org/debian/opencc
++Description: simplified-traditional Chinese conversion library
++ opencc is a library for converting character between traditional Chinese and
++ simplified Chinese.
++
++Package: libopencc-data
++Architecture: all
++Multi-Arch: foreign
++Depends:
++ ${misc:Depends},
++Breaks:
++ libopencc2-data (<< 1.1.1~),
++Replaces:
++ libopencc2-data (<< 1.1.1~),
++Description: ${source:Synopsis} - data files
++ ${source:Extended-Description}
++ .
++ This package includes the data files.
++
++Package: libopencc-dev
++Section: libdevel
++Architecture: any
++Multi-Arch: same
++Depends:
++ libopencc1.1 (= ${binary:Version}),
++ ${misc:Depends},
++Suggests:
++ libopencc-doc,
++Description: ${source:Synopsis} - development
++ ${source:Extended-Description}
++ .
++ This package includes the development support files.
++
++Package: libopencc-doc
++Architecture: all
++Multi-Arch: foreign
++Section: doc
++Depends:
++ ${misc:Depends},
++Description: ${source:Synopsis} - document
++ ${source:Extended-Description}
++ .
++ This package includes the library document files.
++
++Package: libopencc1.1
++Architecture: any
++Pre-Depends:
++ ${misc:Pre-Depends},
++Depends:
++ libopencc-data (= ${source:Version}),
++ ${misc:Depends},
++ ${shlibs:Depends},
++Description: ${source:Synopsis} - runtime
++ ${source:Extended-Description}
++ .
++ This package includes the shared library.
++
++Package: opencc
++Section: utils
++Architecture: any
++Multi-Arch: foreign
++Depends:
++ libopencc1.1 (= ${binary:Version}),
++ ${misc:Depends},
++ ${shlibs:Depends},
++Suggests:
++ libopencc-doc,
++Description: simplified-traditional Chinese conversion tool
++ ${source:Extended-Description}
++ .
++ This package includes the conversion tool.
++
++Package: python3-opencc
++Section: python
++Architecture: any
++Depends:
++ ${misc:Depends},
++ ${python3:Depends},
++ ${shlibs:Depends},
++Description: ${source:Synopsis} - Python 3.x
++ ${source:Extended-Description}
++ .
++ This package provides the Python 3.x module.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3bb27772246eeef9a932db81d2e6a1fdef3d65ab
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,39 @@@
++Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
++Upstream-Name: OpenCC
++Upstream-Contact: BYVoid <byvoid.kcp@gmail.com>
++Source: https://github.com/BYVoid/OpenCC/releases
++Files-Excluded:
++ deps/darts-*/*
++ deps/google-benchmark/*
++ deps/googletest-*/*
++ deps/marisa-*/*
++ deps/rapidjson-*/*
++ deps/tclap-*/*
++ deps/pybind11-*/*
++
++Files: *
++Copyright: 2010-2022, BYVoid <byvoid.kcp@gmail.com>
++License: Apache-2.0
++
++Files: debian/*
++Copyright: 2010, LI Daobing <lidaobing@debian.org>
++           2014, Aron Xu <aron@debian.org>
++           2020-2021, xiao sheng wen <atzlinux@sina.com>
++           2022, Boyuan Yang <byang@debian.org>
++License: Apache-2.0
++
++License: Apache-2.0
++ Licensed under the Apache License, Version 2.0 (the "License");
++ you may not use this file except in compliance with the License.
++ You may obtain a copy of the License at
++ .
++   http://www.apache.org/licenses/LICENSE-2.0
++ .
++ Unless required by applicable law or agreed to in writing, software
++ distributed under the License is distributed on an "AS IS" BASIS,
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ See the License for the specific language governing permissions and
++ limitations under the License.
++ .
++ On Debian systems, the complete text of the Apache version 2.0 license
++ can be found in `/usr/share/common-licenses/Apache-2.0'.
diff --cc debian/docs
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0b6e0f3219b8b17db3ce29ab6794fcf656bfaaa8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++AUTHORS
++README.md
diff --cc debian/gbp.conf
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cec628c7444886870d72dc8bcd536479e7f8a284
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++[DEFAULT]
++pristine-tar = True
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1ef017d2d3edcd4e69947248ce73e804a7d36d8e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/share/opencc/*.json
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e708105dd56d13215919ca731a348673a76cdad0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++usr/include/*
++usr/lib/*/lib*.so
++usr/lib/*/pkgconfig/*
++usr/lib/*/cmake/opencc/*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8c248299ff662435a537088dfbc6d3888d678023
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,10 @@@
++Document: opencc
++Title: Open Chinese Convert
++Author: BYVoid
++Abstract: This document describes the OpenCC.
++ A project for conversion between Traditional and Simplified Chinese.
++Section: Text
++
++Format: HTML
++Index: /usr/share/doc/opencc/html/index.html
++Files: /usr/share/doc/opencc/html/*.html
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..69420c8e5104285b22a095033acf2a0488497d2d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/share/opencc/doc/*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..28d741f23d97060be4bc28b95b64c3a3917eb8ce
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/lib/*/lib*.so.*
++usr/share/opencc/*.ocd2
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2d64d5aca27251ed66128789e495ef073d8eb7ad
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,240 @@@
++# SymbolsHelper-Confirmed: 1.1.8 amd64 arm64 armel armhf hppa i386 loong64 m68k mips64el powerpc ppc64 ppc64el sparc64
++libopencc.so.1.1 libopencc1.1 #MINVER#
++* Build-Depends-Package: libopencc-dev
++ _Z11ConvertDictRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrIN6opencc4DictEE@Base 1.1.4+ds1
++ _Z14LoadDictionaryRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_@Base 1.1.4+ds1
++ _Z20opencc_open_internalPKc@Base 1.1.4+ds1
++ _ZN6opencc10BinaryDict11NewFromFileEP8_IO_FILE@Base 1.1.4+ds1
++ _ZN6opencc10MarisaDict11NewFromDictERKNS_4DictE@Base 1.1.4+ds1
++ _ZN6opencc10MarisaDict11NewFromFileEP8_IO_FILE@Base 1.1.4+ds1
++ _ZN6opencc10MarisaDictC1Ev@Base 1.1.4+ds1
++ _ZN6opencc10MarisaDictC2Ev@Base 1.1.4+ds1
++ _ZN6opencc10MarisaDictD0Ev@Base 1.1.4+ds1
++ _ZN6opencc10MarisaDictD1Ev@Base 1.1.4+ds1
++ _ZN6opencc10MarisaDictD2Ev@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract11SelectWordsEv@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract15ExtractPrefixesEv@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract15ExtractSuffixesEv@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract18CalculateCohesionsEv@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract18CalculateFrequencyEv@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract21ExtractWordCandidatesEv@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract22CalculatePrefixEntropyEv@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract22CalculateSuffixEntropyEv@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract27DefaultPreCalculationFilterERKS0_RKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract28DefaultPostCalculationFilterERKS0_RKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtract5ResetEv@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtractC1Ev@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtractC2Ev@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtractD0Ev@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtractD1Ev@Base 1.1.4+ds1
++ _ZN6opencc13PhraseExtractD2Ev@Base 1.1.4+ds1
++ _ZN6opencc15ConversionChainC1ENSt7__cxx114listISt10shared_ptrINS_10ConversionEESaIS5_EEE@Base 1.1.4+ds1
++ _ZN6opencc15ConversionChainC2ENSt7__cxx114listISt10shared_ptrINS_10ConversionEESaIS5_EEE@Base 1.1.4+ds1
++ _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.1.4+ds1
++ _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EE@Base 1.1.8
++ _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKc@Base 1.1.8
++ _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.1.4+ds1
++ _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EE@Base 1.1.8
++ _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKc@Base 1.1.8
++ _ZN6opencc15SimpleConverterD1Ev@Base 1.1.4+ds1
++ _ZN6opencc15SimpleConverterD2Ev@Base 1.1.4+ds1
++ _ZN6opencc16SerializedValues11NewFromFileEP8_IO_FILE@Base 1.1.4+ds1
++ _ZN6opencc17ConvertDictionaryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_@Base 1.1.4+ds1
++ _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.1.9
++ _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKc@Base 1.1.8
++ _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EE@Base 1.1.8
++ _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_@Base 1.1.4+ds1
++ _ZN6opencc6ConfigC1Ev@Base 1.1.4+ds1
++ _ZN6opencc6ConfigC2Ev@Base 1.1.4+ds1
++ _ZN6opencc6ConfigD0Ev@Base 1.1.4+ds1
++ _ZN6opencc6ConfigD1Ev@Base 1.1.4+ds1
++ _ZN6opencc6ConfigD2Ev@Base 1.1.4+ds1
++ _ZN6opencc7Lexicon20ParseLexiconFromFileEP8_IO_FILE@Base 1.1.8
++ _ZN6opencc7Lexicon4SortEv@Base 1.1.4+ds1
++ _ZN6opencc7Lexicon8IsSortedEv@Base 1.1.4+ds1
++ _ZN6opencc7Lexicon8IsUniqueEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.1.4+ds1
++ _ZN6opencc8TextDict11NewFromDictERKNS_4DictE@Base 1.1.4+ds1
++ _ZN6opencc8TextDict11NewFromFileEP8_IO_FILE@Base 1.1.4+ds1
++ _ZN6opencc8TextDict17NewFromSortedFileEP8_IO_FILE@Base 1.1.4+ds1
++ _ZN6opencc8TextDictC1ERKSt10shared_ptrINS_7LexiconEE@Base 1.1.4+ds1
++ _ZN6opencc8TextDictC2ERKSt10shared_ptrINS_7LexiconEE@Base 1.1.4+ds1
++ _ZN6opencc8TextDictD0Ev@Base 1.1.4+ds1
++ _ZN6opencc8TextDictD1Ev@Base 1.1.4+ds1
++ _ZN6opencc8TextDictD2Ev@Base 1.1.4+ds1
++ _ZN6opencc8UTF8Util11SkipUtf8BomEP8_IO_FILE@Base 1.1.4+ds1
++ _ZN6opencc8internal19ContainsPunctuationERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZN6opencc9DartsDict11NewFromDictERKNS_4DictE@Base 1.1.4+ds1
++ _ZN6opencc9DartsDict11NewFromFileEP8_IO_FILE@Base 1.1.4+ds1
++ _ZN6opencc9DartsDictC1Ev@Base 1.1.4+ds1
++ _ZN6opencc9DartsDictC2Ev@Base 1.1.4+ds1
++ _ZN6opencc9DartsDictD0Ev@Base 1.1.4+ds1
++ _ZN6opencc9DartsDictD1Ev@Base 1.1.4+ds1
++ _ZN6opencc9DartsDictD2Ev@Base 1.1.4+ds1
++ _ZN6opencc9DictEntry12UPtrLessThanERKSt10unique_ptrIS0_St14default_deleteIS0_EES6_@Base 1.1.4+ds1
++ _ZN6opencc9DictGroup11NewFromDictERKNS_4DictE@Base 1.1.4+ds1
++ _ZN6opencc9DictGroupC1ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEE@Base 1.1.4+ds1
++ _ZN6opencc9DictGroupC2ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEE@Base 1.1.4+ds1
++ _ZN6opencc9DictGroupD0Ev@Base 1.1.4+ds1
++ _ZN6opencc9DictGroupD1Ev@Base 1.1.4+ds1
++ _ZN6opencc9DictGroupD2Ev@Base 1.1.4+ds1
++ _ZNK6opencc10BinaryDict12KeyMaxLengthEv@Base 1.1.4+ds1
++ (subst)_ZNK6opencc10BinaryDict15ConstructBufferERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI{size_t}SaI{size_t}EER{size_t}S7_SB_SC_@Base 1.1.4+ds1
++ _ZNK6opencc10BinaryDict15SerializeToFileEP8_IO_FILE@Base 1.1.4+ds1
++ _ZNK6opencc10Conversion7ConvertB5cxx11EPKc@Base 1.1.4+ds1
++ _ZNK6opencc10Conversion7ConvertERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.1.4+ds1
++ _ZNK6opencc10Conversion7ConvertERKSt10shared_ptrINS_8SegmentsEE@Base 1.1.4+ds1
++ _ZNK6opencc10MarisaDict10GetLexiconEv@Base 1.1.4+ds1
++ (subst)_ZNK6opencc10MarisaDict11MatchPrefixEPKc{size_t}@Base 1.1.4+ds1
++ _ZNK6opencc10MarisaDict12KeyMaxLengthEv@Base 1.1.4+ds1
++ _ZNK6opencc10MarisaDict15SerializeToFileEP8_IO_FILE@Base 1.1.4+ds1
++ (subst)_ZNK6opencc10MarisaDict16MatchAllPrefixesEPKc{size_t}@Base 1.1.4+ds1
++ (subst)_ZNK6opencc10MarisaDict5MatchEPKc{size_t}@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract11ProbabilityERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract13PrefixEntropyERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract13SuffixEntropyERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract14LogProbabilityERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ (subst)_ZNK6opencc13PhraseExtract16CalculateEntropyERKSt13unordered_mapINS_19UTF8StringSliceBaseIhEE{size_t}NS3_6HasherESt8equal_toIS3_ESaISt4pairIKS3_{size_t}EEE@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract17CalculateCohesionERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract3PMIERKNS_19UTF8StringSliceBaseIhEES4_S4_@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract6SignalERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract7EntropyERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract8CohesionERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZNK6opencc13PhraseExtract9FrequencyERKNS_19UTF8StringSliceBaseIhEE@Base 1.1.4+ds1
++ _ZNK6opencc15ConversionChain7ConvertERKSt10shared_ptrINS_8SegmentsEE@Base 1.1.4+ds1
++ _ZNK6opencc15SimpleConverter7ConvertB5cxx11EPKc@Base 1.1.4+ds1
++ (subst)_ZNK6opencc15SimpleConverter7ConvertB5cxx11EPKc{size_t}@Base 1.1.4+ds1
++ _ZNK6opencc15SimpleConverter7ConvertEPKcPc@Base 1.1.4+ds1
++ (subst)_ZNK6opencc15SimpleConverter7ConvertEPKc{size_t}Pc@Base 1.1.4+ds1
++ _ZNK6opencc15SimpleConverter7ConvertERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.1.4+ds1
++ _ZNK6opencc16SerializedValues12KeyMaxLengthEv@Base 1.1.4+ds1
++ _ZNK6opencc16SerializedValues15ConstructBufferEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorItSaItEEPj@Base 1.1.4+ds1
++ _ZNK6opencc16SerializedValues15SerializeToFileEP8_IO_FILE@Base 1.1.4+ds1
++ _ZNK6opencc19MultiValueDictEntry8ToStringB5cxx11Ev@Base 1.1.4+ds1
++ _ZNK6opencc20MaxMatchSegmentation7SegmentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.1.4+ds1
++ (subst)_ZNK6opencc4Dict11MatchPrefixEPKc{size_t}@Base 1.1.4+ds1
++ (subst)_ZNK6opencc4Dict16MatchAllPrefixesEPKc{size_t}@Base 1.1.4+ds1
++ _ZNK6opencc8TextDict10GetLexiconEv@Base 1.1.4+ds1
++ _ZNK6opencc8TextDict12KeyMaxLengthEv@Base 1.1.4+ds1
++ _ZNK6opencc8TextDict15SerializeToFileEP8_IO_FILE@Base 1.1.4+ds1
++ (subst)_ZNK6opencc8TextDict5MatchEPKc{size_t}@Base 1.1.4+ds1
++ _ZNK6opencc9Converter7ConvertEPKcPc@Base 1.1.4+ds1
++ _ZNK6opencc9Converter7ConvertERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.1.4+ds1
++ _ZNK6opencc9DartsDict10GetLexiconEv@Base 1.1.4+ds1
++ (subst)_ZNK6opencc9DartsDict11MatchPrefixEPKc{size_t}@Base 1.1.4+ds1
++ _ZNK6opencc9DartsDict12KeyMaxLengthEv@Base 1.1.4+ds1
++ _ZNK6opencc9DartsDict15SerializeToFileEP8_IO_FILE@Base 1.1.4+ds1
++ (subst)_ZNK6opencc9DartsDict5MatchEPKc{size_t}@Base 1.1.4+ds1
++ _ZNK6opencc9DictGroup10GetLexiconEv@Base 1.1.4+ds1
++ (subst)_ZNK6opencc9DictGroup11MatchPrefixEPKc{size_t}@Base 1.1.4+ds1
++ _ZNK6opencc9DictGroup12KeyMaxLengthEv@Base 1.1.4+ds1
++ (subst)_ZNK6opencc9DictGroup16MatchAllPrefixesEPKc{size_t}@Base 1.1.4+ds1
++ (subst)_ZNK6opencc9DictGroup5MatchEPKc{size_t}@Base 1.1.4+ds1
++ (optional=templinst)_ZNSt17_Function_handlerIFbRKN6opencc13PhraseExtractERKNS0_19UTF8StringSliceBaseIhEEEPS8_E10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation@Base 1.1.4+ds1
++ (optional=templinst)_ZNSt17_Function_handlerIFbRKN6opencc13PhraseExtractERKNS0_19UTF8StringSliceBaseIhEEEPS8_E9_M_invokeERKSt9_Any_dataS3_S7_@Base 1.1.4+ds1
++ _ZTIFbRKN6opencc13PhraseExtractERKNS_19UTF8StringSliceBaseIhEEE@Base 1.1.4+ds1
++ _ZTIN6opencc10BinaryDictE@Base 1.1.4+ds1
++ _ZTIN6opencc10MarisaDictE@Base 1.1.4+ds1
++ _ZTIN6opencc11InvalidUTF8E@Base 1.1.4+ds1
++ _ZTIN6opencc12FileNotFoundE@Base 1.1.4+ds1
++ _ZTIN6opencc12SegmentationE@Base 1.1.4+ds1
++ _ZTIN6opencc13InvalidFormatE@Base 1.1.4+ds1
++ _ZTIN6opencc13PhraseExtractE@Base 1.1.4+ds1
++ _ZTIN6opencc15FileNotWritableE@Base 1.1.4+ds1
++ _ZTIN6opencc15ShouldNotBeHereE@Base 1.1.4+ds1
++ _ZTIN6opencc16SerializableDictE@Base 1.1.4+ds1
++ _ZTIN6opencc16SerializedValuesE@Base 1.1.4+ds1
++ _ZTIN6opencc19MultiValueDictEntryE@Base 1.1.4+ds1
++ _ZTIN6opencc20MaxMatchSegmentationE@Base 1.1.4+ds1
++ _ZTIN6opencc20SingleValueDictEntryE@Base 1.1.4+ds1
++ _ZTIN6opencc21InvalidTextDictionaryE@Base 1.1.4+ds1
++ _ZTIN6opencc4DictE@Base 1.1.4+ds1
++ _ZTIN6opencc6ConfigE@Base 1.1.4+ds1
++ _ZTIN6opencc8TextDictE@Base 1.1.4+ds1
++ _ZTIN6opencc9DartsDictE@Base 1.1.4+ds1
++ _ZTIN6opencc9DictEntryE@Base 1.1.4+ds1
++ _ZTIN6opencc9DictGroupE@Base 1.1.4+ds1
++ _ZTIN6opencc9ExceptionE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTIN9__gnu_cxx7__mutexE@Base 1.1.4+ds1
++ _ZTIPFbRKN6opencc13PhraseExtractERKNS_19UTF8StringSliceBaseIhEEE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ _ZTSFbRKN6opencc13PhraseExtractERKNS_19UTF8StringSliceBaseIhEEE@Base 1.1.4+ds1
++ _ZTSN5Darts15DoubleArrayImplIchijNS_6LengthIcEEEE@Base 1.1.4+ds1
++ _ZTSN6opencc10BinaryDictE@Base 1.1.4+ds1
++ _ZTSN6opencc10MarisaDictE@Base 1.1.4+ds1
++ _ZTSN6opencc11InvalidUTF8E@Base 1.1.4+ds1
++ _ZTSN6opencc12FileNotFoundE@Base 1.1.4+ds1
++ _ZTSN6opencc12SegmentationE@Base 1.1.4+ds1
++ _ZTSN6opencc13InvalidFormatE@Base 1.1.4+ds1
++ _ZTSN6opencc13PhraseExtractE@Base 1.1.4+ds1
++ _ZTSN6opencc15FileNotWritableE@Base 1.1.4+ds1
++ _ZTSN6opencc15ShouldNotBeHereE@Base 1.1.4+ds1
++ _ZTSN6opencc16NoValueDictEntryE@Base 1.1.4+ds1
++ _ZTSN6opencc16SerializableDictE@Base 1.1.4+ds1
++ _ZTSN6opencc16SerializedValuesE@Base 1.1.4+ds1
++ _ZTSN6opencc19MultiValueDictEntryE@Base 1.1.4+ds1
++ _ZTSN6opencc20MaxMatchSegmentationE@Base 1.1.4+ds1
++ _ZTSN6opencc20SingleValueDictEntryE@Base 1.1.4+ds1
++ _ZTSN6opencc21InvalidTextDictionaryE@Base 1.1.4+ds1
++ _ZTSN6opencc22StrMultiValueDictEntryE@Base 1.1.4+ds1
++ _ZTSN6opencc23StrSingleValueDictEntryE@Base 1.1.4+ds1
++ _ZTSN6opencc4DictE@Base 1.1.4+ds1
++ _ZTSN6opencc6ConfigE@Base 1.1.4+ds1
++ _ZTSN6opencc8TextDictE@Base 1.1.4+ds1
++ _ZTSN6opencc9DartsDictE@Base 1.1.4+ds1
++ _ZTSN6opencc9DictEntryE@Base 1.1.4+ds1
++ _ZTSN6opencc9DictGroupE@Base 1.1.4+ds1
++ _ZTSN6opencc9ExceptionE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSN9__gnu_cxx7__mutexE@Base 1.1.4+ds1
++ _ZTSPFbRKN6opencc13PhraseExtractERKNS_19UTF8StringSliceBaseIhEEE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc10BinaryDictELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc10BinaryDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc10ConversionELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc10ConversionELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc10MarisaDictELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc10MarisaDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc15ConversionChainELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc15ConversionChainELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc16SerializedValuesELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc16SerializedValuesELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc20MaxMatchSegmentationELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc20MaxMatchSegmentationELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc7LexiconELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc7LexiconELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc8SegmentsELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc8SegmentsELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc8TextDictELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc8TextDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc9ConverterELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc9ConverterELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc9DartsDictELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc9DartsDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc9DictGroupELN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc9DictGroupELN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ (arch=armel riscv64)_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE1EE@Base 1.1.4+ds1
++ (arch=!armel !riscv64)_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.1.4+ds1
++ _ZTVN6opencc10BinaryDictE@Base 1.1.4+ds1
++ _ZTVN6opencc10MarisaDictE@Base 1.1.4+ds1
++ _ZTVN6opencc13PhraseExtractE@Base 1.1.4+ds1
++ _ZTVN6opencc16SerializedValuesE@Base 1.1.4+ds1
++ _ZTVN6opencc19MultiValueDictEntryE@Base 1.1.4+ds1
++ _ZTVN6opencc20MaxMatchSegmentationE@Base 1.1.4+ds1
++ _ZTVN6opencc4DictE@Base 1.1.4+ds1
++ _ZTVN6opencc6ConfigE@Base 1.1.4+ds1
++ _ZTVN6opencc8TextDictE@Base 1.1.4+ds1
++ _ZTVN6opencc9DartsDictE@Base 1.1.4+ds1
++ _ZTVN6opencc9DictGroupE@Base 1.1.4+ds1
++ (optional=templinst)_ZZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEixIS5_EERS6_RKNS0_IS2_T_EEE6buffer@Base 1.1.4+ds1
++ (c++)"non-virtual thunk to opencc::DartsDict::SerializeToFile(_IO_FILE*) const@Base" 1.1.4+ds1
++ (c++)"non-virtual thunk to opencc::MarisaDict::SerializeToFile(_IO_FILE*) const@Base" 1.1.4+ds1
++ (c++)"non-virtual thunk to opencc::TextDict::SerializeToFile(_IO_FILE*) const@Base" 1.1.4+ds1
++ opencc_close@Base 1.1.4+ds1
++ opencc_convert_utf8@Base 1.1.4+ds1
++ opencc_convert_utf8_free@Base 1.1.4+ds1
++ opencc_convert_utf8_to_buffer@Base 1.1.4+ds1
++ opencc_error@Base 1.1.4+ds1
++ opencc_open@Base 1.1.4+ds1
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..1df36c612fb7cd107795e240186fbddfc0f953b9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/bin/*
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a91c95e0c611a332d01520377fb7afe11413da64
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,32 @@@
++From: IME Packaging Team <pkg-ime-devel@lists.alioth.debian.org>
++Date: Mon, 9 Oct 2017 22:02:39 +0800
++Subject: use-cmake-install-libdir
++
++Update 2021-09-18: Also use GNUInstallDirs.
++
++Last-Update: 2024-07-28
++---
++ CMakeLists.txt | 3 ++-
++ 1 file changed, 2 insertions(+), 1 deletion(-)
++
++diff --git a/CMakeLists.txt b/CMakeLists.txt
++index 3393613..6db5fa1 100644
++--- a/CMakeLists.txt
+++++ b/CMakeLists.txt
++@@ -21,6 +21,7 @@ cmake_minimum_required(VERSION 3.5)
++ set (PACKAGE_NAME opencc)
++ project (${PACKAGE_NAME} CXX)
++ include (CTest)
+++include (GNUInstallDirs)
++ 
++ ######## Options
++ option(BUILD_DOCUMENTATION "Use Doxygen to create the HTML based API documentation" OFF)
++@@ -82,7 +83,7 @@ set (DIR_PREFIX ${CMAKE_INSTALL_PREFIX})
++ set (DIR_INCLUDE ${DIR_PREFIX}/include)
++ set (DIR_SHARE ${DIR_PREFIX}/share)
++ set (DIR_ETC ${DIR_PREFIX}/etc)
++-set (DIR_LIBRARY ${DIR_PREFIX}/lib${LIB_SUFFIX})
+++set (DIR_LIBRARY ${CMAKE_INSTALL_LIBDIR})
++ 
++ if (DEFINED SHARE_INSTALL_PREFIX)
++   set (DIR_SHARE ${SHARE_INSTALL_PREFIX})
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b06452f48b5bda88ac30e7a289a5312abd4f1805
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,31 @@@
++From: Boyuan Yang <byang@debian.org>
++Date: Tue, 9 Sep 2025 08:25:14 -0400
++Subject: Force build with c++17
++
++Needed by googletest.
++---
++ CMakeLists.txt | 4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++diff --git a/CMakeLists.txt b/CMakeLists.txt
++index ba28233..25abb7d 100644
++--- a/CMakeLists.txt
+++++ b/CMakeLists.txt
++@@ -155,7 +155,7 @@ add_definitions(
++ 
++ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
++   add_definitions(
++-    -std=c++14
+++    -std=c++17
++     -Wall
++   )
++   set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
++@@ -164,7 +164,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
++   endif ()
++ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
++   add_definitions(
++-    -std=c++14
+++    -std=c++17
++     -Wall
++   )
++   set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pthread")
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8a4c445268c567b04adc2da1d41871719b9afb02
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,29 @@@
++From: Gunnar Hjalmarsson <gunnarhj@ubuntu.com>
++Date: Sun, 28 Jul 2024 19:42:55 -0400
++Subject: Don't fetch remote images when reading docs on disk
++
++This fixes a privacy breach previously reported as Lintian warnings
++
++Forwarded: not-needed
++Last-Update: 2024-07-28
++---
++ README.md | 7 -------
++ 1 file changed, 7 deletions(-)
++
++diff --git a/README.md b/README.md
++index e4edffb..cc22afd 100644
++--- a/README.md
+++++ b/README.md
++@@ -1,12 +1,5 @@
++ # Open Chinese Convert 開放中文轉換
++ 
++-[![CMake](https://github.com/BYVoid/OpenCC/actions/workflows/cmake.yml/badge.svg)](https://github.com/BYVoid/OpenCC/actions/workflows/cmake.yml)
++-[![Bazel](https://github.com/BYVoid/OpenCC/actions/workflows/bazel.yml/badge.svg)](https://github.com/BYVoid/OpenCC/actions/workflows/bazel.yml)
++-[![MSVC](https://github.com/BYVoid/OpenCC/actions/workflows/msvc.yml/badge.svg)](https://github.com/BYVoid/OpenCC/actions/workflows/msvc.yml)
++-[![Node.js CI](https://github.com/BYVoid/OpenCC/actions/workflows/nodejs.yml/badge.svg)](https://github.com/BYVoid/OpenCC/actions/workflows/nodejs.yml)
++-[![Python CI](https://github.com/BYVoid/OpenCC/actions/workflows/python.yml/badge.svg)](https://github.com/BYVoid/OpenCC/actions/workflows/python.yml)
++-[![AppVeyor](https://img.shields.io/appveyor/ci/Carbo/OpenCC.svg)](https://ci.appveyor.com/project/Carbo/OpenCC)
++-
++ ## Introduction 介紹
++ 
++ ![OpenCC](https://opencc.byvoid.com/img/opencc.png)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2309815998c5e31dc9acb45dcc3453acd719b0ee
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++From: Shengjing Zhu <zhsj@debian.org>
++Date: Sun, 28 Jul 2024 19:44:27 -0400
++Subject: Use system googletest
++
++Forwarded: not-needed
++Last-Update: 2024-07-28
++---
++ CMakeLists.txt | 2 ++
++ 1 file changed, 2 insertions(+)
++
++diff --git a/CMakeLists.txt b/CMakeLists.txt
++index 6db5fa1..fcdedeb 100644
++--- a/CMakeLists.txt
+++++ b/CMakeLists.txt
++@@ -231,6 +231,8 @@ add_subdirectory(test)
++ if (ENABLE_GTEST)
++   if(NOT USE_SYSTEM_GTEST)
++     add_subdirectory(deps/googletest-1.15.0)
+++  else()
+++    add_subdirectory(/usr/src/googletest/googletest ${CMAKE_BINARY_DIR}/googletest-build EXCLUDE_FROM_ALL)
++   endif()
++   enable_testing()
++ endif()
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e08a95677f4dac728f27ccd6b12b92ddec1b5671
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,20 @@@
++From: Shengjing Zhu <zhsj@debian.org>
++Date: Fri, 2 Aug 2024 17:11:08 +0800
++Subject: Disable build in setup.py
++
++---
++ setup.py | 1 +
++ 1 file changed, 1 insertion(+)
++
++diff --git a/setup.py b/setup.py
++index a4bc500..f32590e 100644
++--- a/setup.py
+++++ b/setup.py
++@@ -62,6 +62,7 @@ def get_long_description():
++ 
++ 
++ def build_libopencc(output_path):
+++    return
++     print('building libopencc into %s' % _build_dir)
++ 
++     is_windows = sys.platform == 'win32'
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8155990af792967c48fcb62a3aaae7949a743568
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,55 @@@
++From: Boyuan Yang <byang@debian.org>
++Date: Tue, 13 Jan 2026 18:04:57 -0500
++Subject: setup.py: Handle python binding instead of cmake
++
++---
++ setup.py | 22 +++++++++++++++++-----
++ 1 file changed, 17 insertions(+), 5 deletions(-)
++
++diff --git a/setup.py b/setup.py
++index f32590e..1d062e1 100644
++--- a/setup.py
+++++ b/setup.py
++@@ -8,6 +8,8 @@ import setuptools
++ import setuptools.command.build_ext
++ import wheel.bdist_wheel
++ 
+++import pybind11
+++
++ _this_dir = os.path.dirname(os.path.abspath(__file__))
++ _build_dir = os.path.join(_this_dir, 'build', 'python')
++ 
++@@ -111,10 +113,13 @@ class OpenCCExtension(setuptools.Extension, object):
++ 
++ class BuildExtCommand(setuptools.command.build_ext.build_ext, object):
++     def build_extension(self, ext):
++-        if self.inplace:
++-            output_path = os.path.join(_this_dir, 'python', 'opencc', 'clib')
++-        else:
++-            output_path = os.path.abspath(os.path.join(self.build_lib, 'opencc', 'clib'))
+++        project_root = os.path.abspath(_this_dir)
+++        build_dir = os.environ.get('OPENCC_BUILD_DIR', 'obj-x86_64-linux-gnu')
+++        lib_path = os.path.join(project_root, build_dir, 'src')
+++        ext.include_dirs.append(pybind11.get_include())
+++        ext.include_dirs.append('src')
+++        ext.library_dirs = [lib_path]
+++        ext.runtime_library_dirs = [lib_path]
++         if isinstance(ext, OpenCCExtension):
++             build_libopencc(output_path)
++         else:
++@@ -174,7 +179,14 @@ setuptools.setup(
++ 
++     packages=packages,
++     package_dir={'opencc': 'python/opencc'},
++-    ext_modules=[OpenCCExtension('opencc.clib.opencc_clib', 'python')],
+++    ext_modules=[
+++        setuptools.Extension(
+++            'opencc.clib.opencc_clib',
+++            sources=['src/py_opencc.cpp'],
+++            libraries=['opencc'],
+++            language='c++'
+++        )
+++        ],
++     cmdclass={
++         'build_ext': BuildExtCommand,
++         'bdist_wheel': BDistWheelCommand
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e53d3015995b4615f9389f9031c905f5cbf9bdd1
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,23 @@@
++From: Peng Wu <alexepico@gmail.com>
++Date: Thu, 13 Feb 2025 00:15:10 +0800
++Subject: Fix build for gcc 15 (#934)
++
++Co-authored-by: Peng Wu <pwu@redhat.com>
++Bug-Debian: https://bugs.debian.org/1097512
++---
++ src/SerializedValues.hpp | 2 ++
++ 1 file changed, 2 insertions(+)
++
++diff --git a/src/SerializedValues.hpp b/src/SerializedValues.hpp
++index c17210b..f7e5bb2 100644
++--- a/src/SerializedValues.hpp
+++++ b/src/SerializedValues.hpp
++@@ -18,6 +18,8 @@
++ 
++ #pragma once
++ 
+++#include <cstdint>
+++
++ #include "Common.hpp"
++ #include "SerializableDict.hpp"
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..73f1f57e3fcc540b8f4340e4e7a044abcd49cf87
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,33 @@@
++From: WhiredPlanck <whiredplanck@outlook.com>
++Date: Sat, 5 Jul 2025 03:57:30 +0800
++Subject: Fix deprecated declarations in C++17
++
++---
++ src/Segments.hpp | 6 +++++-
++ 1 file changed, 5 insertions(+), 1 deletion(-)
++
++diff --git a/src/Segments.hpp b/src/Segments.hpp
++index 2186dfd..57320fe 100644
++--- a/src/Segments.hpp
+++++ b/src/Segments.hpp
++@@ -18,6 +18,7 @@
++ 
++ #pragma once
++ 
+++#include <iterator>
++ #include <sstream>
++ 
++ #include "Common.hpp"
++@@ -53,8 +54,11 @@ public:
++     managed.push_back(str);
++   }
++ 
++-  class iterator : public std::iterator<std::input_iterator_tag, const char*> {
+++  class iterator {
++   public:
+++    using iterator_category = std::input_iterator_tag;
+++    using value_type = const char*;
+++
++     iterator(const Segments* const _segments, size_t _cursor)
++         : segments(_segments), cursor(_cursor) {}
++ 
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b12f716daf5e495216b30c6599bf17b77606e92f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,212 @@@
++From 345c9a50ab07018f1b4439776bad78a0d40778ec Mon Sep 17 00:00:00 2001
++From: frankslin <frankslin@users.noreply.github.com>
++Date: Mon, 12 Jan 2026 16:51:38 -0800
++Subject: [PATCH] Fix two out-of-bounds read issues when handling truncated
++ UTF-8 input (#1005)
++
++Two independent out-of-bounds read issues were identified in OpenCC's UTF-8
++processing logic when handling malformed or truncated UTF-8 sequences.
++
++1) MaxMatchSegmentation:
++   NextCharLength() could return a value larger than the remaining input size.
++   The previous logic subtracted this value from a size_t length counter,
++   potentially causing underflow and subsequent out-of-bounds reads.
++
++2) Conversion:
++   Similar length handling could allow reads past the end of the input buffer
++   during dictionary matching, potentially propagating unintended bytes to the
++   conversion output.
++
++This patch fixes both issues by:
++- Explicitly tracking the end of the input buffer
++- Recomputing remaining length on each iteration
++- Clamping matched character and key lengths to the remaining buffer size
++- Preventing reads past the null terminator
++
++The changes preserve existing behavior for valid UTF-8 input and add test
++coverage for truncated UTF-8 sequences.
++
++These issues may have security implications when processing untrusted input
++and are classified as heap out-of-bounds reads (CWE-125).
++
++Co-authored-by: Claude <noreply@anthropic.com>
++Applied-Upstream: https://github.com/BYVoid/OpenCC/commit/345c9a50ab07018f1b4439776bad78a0d40778ec
++---
++ src/Conversion.cpp               | 18 ++++++++++++-
++ src/ConversionTest.cpp           | 40 +++++++++++++++++++++++++++
++ src/MaxMatchSegmentation.cpp     | 10 ++++---
++ src/MaxMatchSegmentationTest.cpp | 46 ++++++++++++++++++++++++++++++++
++ 4 files changed, 110 insertions(+), 4 deletions(-)
++
++diff --git a/src/Conversion.cpp b/src/Conversion.cpp
++index 87a513514..d5737a1db 100644
++--- a/src/Conversion.cpp
+++++ b/src/Conversion.cpp
++@@ -23,14 +23,30 @@ using namespace opencc;
++ 
++ std::string Conversion::Convert(const char* phrase) const {
++   std::ostringstream buffer;
+++  // Calculate string end to prevent reading beyond null terminator
+++  const char* phraseEnd = phrase;
+++  while (*phraseEnd != '\0') {
+++    phraseEnd++;
+++  }
+++
++   for (const char* pstr = phrase; *pstr != '\0';) {
++-    Optional<const DictEntry*> matched = dict->MatchPrefix(pstr);
+++    size_t remainingLength = phraseEnd - pstr;
+++    Optional<const DictEntry*> matched = dict->MatchPrefix(pstr, remainingLength);
++     size_t matchedLength;
++     if (matched.IsNull()) {
++       matchedLength = UTF8Util::NextCharLength(pstr);
+++      // Ensure we don't read beyond the null terminator
+++      if (matchedLength > remainingLength) {
+++        matchedLength = remainingLength;
+++      }
++       buffer << UTF8Util::FromSubstr(pstr, matchedLength);
++     } else {
++       matchedLength = matched.Get()->KeyLength();
+++      // Defensive: ensure dictionary key length does not exceed remaining input
+++      // (MatchPrefix should already guarantee this, but defense in depth)
+++      if (matchedLength > remainingLength) {
+++        matchedLength = remainingLength;
+++      }
++       buffer << matched.Get()->GetDefault();
++     }
++     pstr += matchedLength;
++diff --git a/src/ConversionTest.cpp b/src/ConversionTest.cpp
++index 04a80a7b0..fb7731c7d 100644
++--- a/src/ConversionTest.cpp
+++++ b/src/ConversionTest.cpp
++@@ -47,4 +47,44 @@ TEST_F(ConversionTest, ConvertCString) {
++   EXPECT_EQ(expected, converted);
++ }
++ 
+++TEST_F(ConversionTest, TruncatedUtf8Sequence) {
+++  // This test specifically triggers the information disclosure vulnerability
+++  // in the old code. The bug occurs when a string ends with an incomplete
+++  // UTF-8 sequence.
+++  //
+++  // Background: UTF8Util::NextCharLength() examines only the first byte to
+++  // determine the expected character length (1-6 bytes), but doesn't verify
+++  // that enough bytes actually remain before the null terminator.
+++  //
+++  // Trigger condition: When the expected UTF-8 character length exceeds
+++  // the actual remaining bytes before null, the old code would:
+++  // 1. Call FromSubstr with a length crossing the null terminator
+++  // 2. Advance pstr beyond the null terminator
+++  // 3. Continue reading heap memory on next iteration
+++  // 4. Output leaked heap data to conversion result (INFORMATION DISCLOSURE)
+++
+++  // Construct a string ending with a truncated 3-byte UTF-8 sequence:
+++  // - Normal text: "干" (valid 3-byte UTF-8: 0xE5 0xB9 0xB2)
+++  // - Followed by: 0xE5 0xB9 (incomplete 3-byte sequence - missing last byte)
+++  std::string malformed;
+++  malformed += utf8("干");   // Valid character
+++  malformed += '\xE5';       // Start of 3-byte UTF-8 (NextCharLength returns 3)
+++  malformed += '\xB9';       // Second byte
+++  // Missing third byte - only 2 bytes remain but NextCharLength expects 3
+++  // Old code would jump over null, read heap memory, and leak it in output
+++
+++  // The fixed code should handle this gracefully without information disclosure
+++  EXPECT_NO_THROW({
+++    const std::string converted = conversion->Convert(malformed);
+++    // Should convert "干" to "幹" (first candidate in dict) and preserve incomplete sequence
+++    std::string expected;
+++    expected += utf8("幹");  // Converted from "干" (dict has ["幹", "乾", "干"])
+++    expected += '\xE5';      // Incomplete sequence preserved as-is
+++    expected += '\xB9';
+++    EXPECT_EQ(expected, converted);
+++    // Should NOT contain garbage heap data beyond the input
+++    // (ASan would catch any out-of-bounds reads during conversion)
+++  });
+++}
+++
++ } // namespace opencc
++diff --git a/src/MaxMatchSegmentation.cpp b/src/MaxMatchSegmentation.cpp
++index 5cdd79f88..ff24e0a0e 100644
++--- a/src/MaxMatchSegmentation.cpp
+++++ b/src/MaxMatchSegmentation.cpp
++@@ -30,12 +30,17 @@ SegmentsPtr MaxMatchSegmentation::Segment(const std::string& text) const {
++       segLength = 0;
++     }
++   };
++-  size_t length = text.length();
+++  const char* textEnd = text.c_str() + text.length();
++   for (const char* pstr = text.c_str(); *pstr != '\0';) {
++-    const Optional<const DictEntry*>& matched = dict->MatchPrefix(pstr, length);
+++    size_t remainingLength = textEnd - pstr;
+++    const Optional<const DictEntry*>& matched = dict->MatchPrefix(pstr, remainingLength);
++     size_t matchedLength;
++     if (matched.IsNull()) {
++       matchedLength = UTF8Util::NextCharLength(pstr);
+++      // Ensure we don't advance beyond the string boundary
+++      if (matchedLength > remainingLength) {
+++        matchedLength = remainingLength;
+++      }
++       segLength += matchedLength;
++     } else {
++       clearBuffer();
++@@ -44,7 +49,6 @@ SegmentsPtr MaxMatchSegmentation::Segment(const std::string& text) const {
++       segStart = pstr + matchedLength;
++     }
++     pstr += matchedLength;
++-    length -= matchedLength;
++   }
++   clearBuffer();
++   return segments;
++diff --git a/src/MaxMatchSegmentationTest.cpp b/src/MaxMatchSegmentationTest.cpp
++index 775c7efb4..c1c9e3521 100644
++--- a/src/MaxMatchSegmentationTest.cpp
+++++ b/src/MaxMatchSegmentationTest.cpp
++@@ -43,4 +43,50 @@ TEST_F(MaxMatchSegmentationTest, Segment) {
++   EXPECT_EQ(utf8("干燥"), std::string(segments->At(3)));
++ }
++ 
+++TEST_F(MaxMatchSegmentationTest, EmptyString) {
+++  const auto& segments = segmenter->Segment("");
+++  EXPECT_EQ(0, segments->Length());
+++}
+++
+++TEST_F(MaxMatchSegmentationTest, SingleCharacter) {
+++  const auto& segments = segmenter->Segment(utf8("一"));
+++  EXPECT_EQ(1, segments->Length());
+++  EXPECT_EQ(utf8("一"), std::string(segments->At(0)));
+++}
+++
+++TEST_F(MaxMatchSegmentationTest, TruncatedUtf8Sequence) {
+++  // This test specifically triggers the buffer overflow bug in the old code.
+++  // The bug occurs when a string ends with an incomplete UTF-8 sequence.
+++  //
+++  // Background: UTF8Util::NextCharLength() examines only the first byte to
+++  // determine the expected character length (1-6 bytes), but doesn't verify
+++  // that enough bytes actually remain in the buffer.
+++  //
+++  // Trigger condition: When the expected UTF-8 character length exceeds
+++  // the actual remaining bytes, the old code's "length -= matchedLength"
+++  // causes integer underflow (size_t wraps around to a huge value), leading
+++  // to out-of-bounds reads in the next MatchPrefix() call.
+++
+++  // Construct a string ending with a truncated 3-byte UTF-8 sequence:
+++  // - Normal text: "一" (valid 3-byte UTF-8: 0xE4 0xB8 0x80)
+++  // - Followed by: 0xE4 0xB8 (incomplete 3-byte sequence - missing last byte)
+++  std::string malformed;
+++  malformed += utf8("一");  // Valid character
+++  malformed += '\xE4';      // Start of 3-byte UTF-8 (NextCharLength returns 3)
+++  malformed += '\xB8';      // Second byte
+++  // Missing third byte - only 2 bytes remain but NextCharLength expects 3
+++  // Old code: length=2, matchedLength=3 → length = 2-3 = SIZE_MAX (underflow)
+++
+++  // The fixed code should handle this gracefully without buffer overflow
+++  EXPECT_NO_THROW({
+++    const auto& segments = segmenter->Segment(malformed);
+++    // The valid character "一" plus the incomplete sequence form a single segment
+++    // (incomplete sequence doesn't match dictionary, gets accumulated with previous)
+++    EXPECT_EQ(1, segments->Length());
+++    // Output should preserve all input bytes (including incomplete sequence)
+++    // This is correct behavior - we don't discard data, we preserve it
+++    EXPECT_EQ(malformed, std::string(segments->At(0)));
+++  });
+++}
+++
++ } // namespace opencc
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3b76d844c28d7946c6847ded184c774fa664a941
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,9 @@@
++0001-use-cmake-install-libdir.patch
++0002-Force-build-with-c-17.patch
++0003-no-remote-images-when-reading-docs-on-disk.patch
++0004-Use-system-googletest.patch
++0005-Disable-build-in-setup.py.patch
++backport/0006-Fix-build-for-gcc-15-934.patch
++backport/0007-Fix-deprecated-declarations-in-C-17.patch
++backport/345c9a50ab07018f1b4439776bad78a0d40778ec.patch
++0009-setup.py-Handle-python-binding-instead-of-cmake.patch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..560dfadfdb4382d253c8a75cda6a77f45f75e251
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++python/tests/test_opencc.py python/tests/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..4606faae20a7647f40c70df32a64dfbca8ffdaa5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++usr/lib/python3*
diff --cc debian/rules
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..356981c634d6a8530f797e9a138c5c0436d2c136
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,76 @@@
++#!/usr/bin/make -f
++# -*- makefile -*-
++# Uncomment this to turn on verbose mode.
++export DH_VERBOSE=1
++
++# see FEATURE AREAS in dpkg-buildflags(1)
++export DEB_BUILD_MAINT_OPTIONS = hardening=+all optimize=+lto
++
++include /usr/share/dpkg/architecture.mk
++
++# Used in the python3 binding (setup.py)
++export OPENCC_BUILD_DIR = obj-$(DEB_BUILD_GNU_TYPE)
++
++
++# Disable parallel build to circumvent some random build error
++# (needs further investigation)
++%:
++      dh $@ --buildsystem=cmake --no-parallel
++
++
++# Python build handled separately in pyproject.toml and setup.py
++BUILD_OPTIONS = \
++    -DCMAKE_INSTALL_PREFIX=/usr \
++    -DCMAKE_INSTALL_LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)/ \
++    -DCMAKE_BUILD_TYPE=Release \
++    -DBUILD_PYTHON=OFF \
++    -DUSE_SYSTEM_DARTS=ON \
++    -DUSE_SYSTEM_GTEST=ON \
++    -DUSE_SYSTEM_MARISA=ON \
++    -DUSE_SYSTEM_PYBIND11=ON \
++    -DUSE_SYSTEM_RAPIDJSON=ON \
++    -DUSE_SYSTEM_TCLAP=ON
++
++ifeq (,$(filter nodoc,$(DEB_BUILD_OPTIONS)))
++BUILD_OPTIONS += -DBUILD_DOCUMENTATION=ON
++else
++BUILD_OPTIONS += -DBUILD_DOCUMENTATION=OFF
++endif
++
++ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
++BUILD_OPTIONS += -DENABLE_GTEST=ON
++else
++BUILD_OPTIONS += -DENABLE_GTEST=OFF
++endif
++
++override_dh_auto_configure:
++      dh_auto_configure -- $(BUILD_OPTIONS)
++
++execute_after_dh_auto_build:
++      dh_auto_build -O--buildsystem=pybuild -- -s pyproject
++
++execute_after_dh_auto_test:
++      dh_auto_test -O--buildsystem=pybuild -- -s pyproject
++
++execute_after_dh_auto_install:
++      dh_auto_install -O--buildsystem=pybuild -- -s pyproject
++      chrpath --delete debian/tmp/usr/lib/*/dist-packages/opencc/clib/*.so
++      for i in debian/tmp/usr/lib/*/dist-packages/opencc/clib/; do \
++              mkdir -p $$i/share/; \
++              ln -sf ../../../../../../share/opencc $$i/share/; \
++      done
++
++execute_after_dh_auto_clean:
++      find . -name *.pyc -delete
++
++execute_after_dh_installdocs-indep:
++ifeq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS)))
++      dh_doxygen --indep
++endif
++
++override_dh_installdocs:
++      dh_installdocs -plibopencc-doc --doc-main-package=opencc
++      dh_installdocs --remaining-packages
++
++override_dh_installchangelogs:
++      dh_installchangelogs -k NEWS.md
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..163aaf8d82b6c54f23c45f32895dbdfdcc27b047
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++3.0 (quilt)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ceb0cce8173f66058a4fd50f7e5d07cf98e9b622
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++# libopencc1.1 installs architecture dependent .ocd2 files
++dependency-is-not-multi-archified libopencc-dev depends on libopencc1.1 (multi-arch: no)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e6f88c7c9b9e1be2242b55e7c1b8550587fc8234
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,24 @@@
++cmake_minimum_required(VERSION 3.18)
++project (opencc-integration CXX)
++include (CTest)
++enable_testing()
++
++find_package(PkgConfig REQUIRED)
++find_program (OPENCC_TOOL opencc REQUIRED)
++pkg_check_modules(OPENCC REQUIRED IMPORTED_TARGET opencc)
++
++add_definitions(
++  -DCMAKE_BINARY_DIR="${CMAKE_BINARY_DIR}"
++  -DCMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}"
++  -DPROJECT_BINARY_PATH="${OPENCC_TOOL}"
++)
++make_directory(${CMAKE_BINARY_DIR}/test)
++add_subdirectory(/usr/src/googletest/googletest ${CMAKE_BINARY_DIR}/googletest-build EXCLUDE_FROM_ALL)
++set(UNITTESTS
++  CommandLineConvertTest
++)
++foreach(UNITTEST ${UNITTESTS})
++  add_executable(${UNITTEST} ${UNITTEST}.cpp)
++  target_link_libraries(${UNITTEST} gtest gtest_main PkgConfig::OPENCC)
++  add_test(${UNITTEST} ${UNITTEST})
++endforeach(UNITTEST)
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6ca60687bff5bad98cb72e4642c8999b0b20d1a8
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,104 @@@
++/*
++ * Open Chinese Convert
++ *
++ * Copyright 2015 Carbo Kuo <byvoid@byvoid.com>
++ *
++ * Licensed under the Apache License, Version 2.0 (the "License");
++ * you may not use this file except in compliance with the License.
++ * You may obtain a copy of the License at
++ *
++ *      http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software
++ * distributed under the License is distributed on an "AS IS" BASIS,
++ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ * See the License for the specific language governing permissions and
++ * limitations under the License.
++ */
++
++#include <fstream>
++
++#include "Common.hpp"
++#include "gtest/gtest.h"
++
++namespace opencc {
++
++class CommandLineConvertTest : public ::testing::Test {
++protected:
++  CommandLineConvertTest() { GetCurrentWorkingDirectory(); }
++
++  virtual ~CommandLineConvertTest() { free(originalWorkingDirectory); }
++
++  virtual void SetUp() {
++    ASSERT_NE("", CMAKE_BINARY_DIR);
++    ASSERT_NE("", CMAKE_SOURCE_DIR);
++    ASSERT_EQ(0, chdir("/usr/share/opencc/"));
++  }
++
++  virtual void TearDown() { ASSERT_EQ(0, chdir(originalWorkingDirectory)); }
++
++  std::string GetFileContents(const std::string& fileName) const {
++    std::ifstream fs(fileName);
++    EXPECT_TRUE(fs.is_open());
++    const std::string content((std::istreambuf_iterator<char>(fs)),
++                              (std::istreambuf_iterator<char>()));
++    fs.close();
++    return content;
++  }
++
++  void GetCurrentWorkingDirectory() {
++    originalWorkingDirectory = getcwd(nullptr, 0);
++  }
++
++  const char* OpenccCommand() const {
++    return PROJECT_BINARY_PATH;
++  }
++
++  const char* InputDirectory() const {
++    return CMAKE_SOURCE_DIR "/../../test/testcases/";
++  }
++
++  const char* OutputDirectory() const { return CMAKE_BINARY_DIR "/test/"; }
++
++  const char* AnswerDirectory() const {
++    return CMAKE_SOURCE_DIR "/../../test/testcases/";
++  }
++
++  const char* ConfigurationDirectory() const {
++    return "/usr/share/opencc/";
++  }
++
++  std::string OutputFile(const char* config) const {
++    return std::string(OutputDirectory()) + config + ".out";
++  }
++
++  std::string AnswerFile(const char* config) const {
++    return std::string(AnswerDirectory()) + config + ".ans";
++  }
++
++  std::string TestCommand(const char* config) const {
++    return OpenccCommand() + std::string("") + " -i " + InputDirectory() +
++           config + ".in" + " -o " + OutputFile(config) + " -c " +
++           ConfigurationDirectory() + config + ".json";
++  }
++
++  char* originalWorkingDirectory;
++};
++
++class ConfigurationTest : public CommandLineConvertTest,
++                          public ::testing::WithParamInterface<const char*> {};
++
++TEST_P(ConfigurationTest, Convert) {
++  const char* config = GetParam();
++  ASSERT_EQ(0, system(TestCommand(config).c_str()));
++  const std::string& output = GetFileContents(OutputFile(config));
++  const std::string& answer = GetFileContents(AnswerFile(config));
++  ASSERT_EQ(answer, output);
++}
++
++INSTANTIATE_TEST_CASE_P(CommandLine, ConfigurationTest,
++                        ::testing::Values("hk2s", "hk2t", "jp2t", "s2hk", "s2t",
++                                          "s2tw", "s2twp", "t2hk", "t2jp", "t2s",
++                                          "tw2s", "tw2sp", "tw2t"));
++
++} // namespace opencc
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..12d6cec95005068e6d0d52a8dc03311af6895437
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,3 @@@
++Fork from ../../test, please refresh this file if source has changed.
++
++Test with installed opencc tool and library.
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5afd579ae0dab645245d3a96ab91b3fad7f2294d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,8 @@@
++Tests: integration
++Depends:
++ build-essential,
++ cmake,
++ googletest,
++ pkgconf,
++ @,
++Restrictions: allow-stderr,
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c1f1746ddd6e2c7d905a5ae48c6a617265bb9ffb
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,12 @@@
++#!/bin/sh
++
++set -ex
++
++cd "$(dirname "$0")"
++mkdir -p build
++cd build
++cmake ..
++make
++make test
++cd ..
++rm -rf build
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..85af1e4c175b591c80e04415ddf1439a95d09335
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++Bug-Database: https://github.com/BYVoid/OpenCC/issues
++Bug-Submit: https://github.com/BYVoid/OpenCC/issues/new
++Repository: https://github.com/BYVoid/OpenCC.git
++Repository-Browse: https://github.com/BYVoid/OpenCC
diff --cc debian/watch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7c65a044063e9b9dd5418a96e49c93b7fbe29d04
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++version=4
++opts="dversionmangle=s/\+ds\d?$//,repack,repacksuffix=+ds1,filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%@PACKAGE@-$1.tar.gz%" \
++ https://github.com/byvoid/@PACKAGE@/tags \
++ (?:.*?/)?(?:ver\.)?@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate